home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 with MFC / Programming Windows 95 with MFC (Microsoft Programming Series)(097-0001465)(1996).iso / CODE / Chap05 / CtlDemo1 / CtlDemo1.cpp next >
Encoding:
C/C++ Source or Header  |  1996-04-05  |  3.2 KB  |  142 lines

  1. //***********************************************************************
  2. //
  3. //  CtlDemo1.cpp
  4. //
  5. //***********************************************************************
  6.  
  7. #include <afxwin.h>
  8. #include "Resource.h"
  9. #include "CtlDemo1.h"
  10.  
  11. CMyApp myApp;
  12.  
  13. /////////////////////////////////////////////////////////////////////////
  14. // CMyApp member functions
  15.  
  16. BOOL CMyApp::InitInstance ()
  17. {
  18.     m_pMainWnd = new CMainWindow;
  19.     m_pMainWnd->ShowWindow (m_nCmdShow);
  20.     m_pMainWnd->UpdateWindow ();
  21.     return TRUE;
  22. }
  23.  
  24. /////////////////////////////////////////////////////////////////////////
  25. // CMainWindow message map and member functions
  26.  
  27. BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
  28.     ON_WM_CREATE ()
  29.     ON_WM_SIZE ()
  30.     ON_WM_SETFOCUS ()
  31.     ON_COMMAND (IDM_FILE_NEW, OnFileNew)
  32.     ON_COMMAND (IDM_FILE_EXIT, OnFileExit)
  33.     ON_COMMAND (IDM_EDIT_UNDO, OnEditUndo)
  34.     ON_COMMAND (IDM_EDIT_CUT, OnEditCut)
  35.     ON_COMMAND (IDM_EDIT_COPY, OnEditCopy)
  36.     ON_COMMAND (IDM_EDIT_PASTE, OnEditPaste)
  37.     ON_COMMAND (IDM_EDIT_DELETE, OnEditDelete)
  38.     ON_UPDATE_COMMAND_UI (IDM_EDIT_UNDO, OnUpdateEditUndoUI)
  39.     ON_UPDATE_COMMAND_UI (IDM_EDIT_CUT, OnUpdateEditCutUI)
  40.     ON_UPDATE_COMMAND_UI (IDM_EDIT_COPY, OnUpdateEditCopyUI)
  41.     ON_UPDATE_COMMAND_UI (IDM_EDIT_PASTE, OnUpdateEditPasteUI)
  42.     ON_UPDATE_COMMAND_UI (IDM_EDIT_DELETE, OnUpdateEditDeleteUI)
  43. END_MESSAGE_MAP ()
  44.  
  45. CMainWindow::CMainWindow ()
  46. {
  47.     Create (NULL, "CtlDemo1", WS_OVERLAPPEDWINDOW,
  48.         rectDefault, NULL, MAKEINTRESOURCE (IDR_MAINFRAME));
  49.  
  50.     LoadAccelTable (MAKEINTRESOURCE (IDR_MAINFRAME));
  51. }
  52.  
  53. int CMainWindow::OnCreate (LPCREATESTRUCT lpcs)
  54. {
  55.     if (CFrameWnd::OnCreate (lpcs) == -1)
  56.         return -1;
  57.  
  58.     m_ctlEdit.Create (WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
  59.         ES_AUTOVSCROLL, CRect (0, 0, 0, 0), this, IDC_EDIT);
  60.  
  61.     m_ctlEdit.SetMargins (8, 8);
  62.     return 0;
  63. }
  64.  
  65. void CMainWindow::OnSize (UINT nType, int cx, int cy)
  66. {
  67.     CFrameWnd::OnSize (nType, cx, cy);
  68.     m_ctlEdit.MoveWindow (0, 0, cx, cy);
  69. }
  70.  
  71. void CMainWindow::OnSetFocus (CWnd* pOldWnd)
  72. {
  73.     m_ctlEdit.SetFocus ();
  74. }
  75.  
  76. void CMainWindow::OnFileNew ()
  77. {
  78.     m_ctlEdit.SetWindowText ("");
  79. }
  80.  
  81. void CMainWindow::OnFileExit ()
  82. {
  83.     SendMessage (WM_CLOSE, 0, 0);
  84. }
  85.  
  86. void CMainWindow::OnEditUndo ()
  87. {
  88.     m_ctlEdit.Undo ();
  89. }
  90.  
  91. void CMainWindow::OnEditCut ()
  92. {
  93.     m_ctlEdit.Cut ();
  94. }
  95.  
  96. void CMainWindow::OnEditCopy ()
  97. {
  98.     m_ctlEdit.Copy ();
  99. }
  100.  
  101. void CMainWindow::OnEditPaste ()
  102. {
  103.     m_ctlEdit.Paste ();
  104. }
  105.  
  106. void CMainWindow::OnEditDelete ()
  107. {
  108.     m_ctlEdit.Clear ();
  109. }
  110.  
  111. void CMainWindow::OnUpdateEditUndoUI (CCmdUI* pCmdUI)
  112. {
  113.     pCmdUI->Enable (m_ctlEdit.CanUndo ());
  114. }
  115.  
  116. void CMainWindow::OnUpdateEditCutUI (CCmdUI* pCmdUI)
  117. {
  118.     pCmdUI->Enable (IsTextSelected ());
  119. }
  120.  
  121. void CMainWindow::OnUpdateEditCopyUI (CCmdUI* pCmdUI)
  122. {
  123.     pCmdUI->Enable (IsTextSelected ());
  124. }
  125.  
  126. void CMainWindow::OnUpdateEditPasteUI (CCmdUI* pCmdUI)
  127. {
  128.     pCmdUI->Enable (::IsClipboardFormatAvailable (CF_TEXT));
  129. }
  130.  
  131. void CMainWindow::OnUpdateEditDeleteUI (CCmdUI* pCmdUI)
  132. {
  133.     pCmdUI->Enable (IsTextSelected ());
  134. }
  135.  
  136. BOOL CMainWindow::IsTextSelected ()
  137. {
  138.     int nStart, nEnd;
  139.     m_ctlEdit.GetSel (nStart, nEnd);
  140.     return (nStart != nEnd);
  141. }
  142.